package com.xinshujia.utils.response;

/**
 * *************************************
 * *   @author: 野狼上校               **
 * *   @since: 2024-07-11 10:49       **
 * *   @version: 1.0                  **
 * *************************************
 * <p>
 * 统一数据的返回格式
 */
public class RespResult {
    private Integer code;
    private String message;
    private Object data;

    public RespResult(Integer code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    /**
     * 成功 - 无参
     */
    public static RespResult OK() {
        return new RespResult(RespCode.SUCCESS.getCode(), RespCode.SUCCESS.getMessage(), null);
    }

    /**
     * 成功 - 有数据返回
     *
     * @param: data 返回的数据
     */
    public static RespResult OK(Object data) {
        return new RespResult(RespCode.SUCCESS.getCode(), RespCode.SUCCESS.getMessage(), data);
    }

    /**
     * 成功 - 自定义提示消息和返回数据
     *
     * @param: message 提示消息
     * @param: data 返回的数据
     */
    public static RespResult OK(String message, Object data) {
        return new RespResult(RespCode.SUCCESS.getCode(), message, data);
    }

    /**
     * 失败 - 无参
     */
    public static RespResult Fail() {
        return new RespResult(RespCode.FAIL.getCode(), RespCode.FAIL.getMessage(), null);
    }

    /**
     * 失败 - 自定义提示消息
     *
     * @param: message 提示消息
     */
    public static RespResult Fail(String message) {
        return new RespResult(RespCode.FAIL.getCode(), message, null);
    }

    /**
     * 失败 - 自定义提示消息和返回数据
     *
     * @param: message 提示消息
     * @param: data 返回的数据
     */
    public static RespResult Fail(String message, Object data) {
        return new RespResult(RespCode.SUCCESS.getCode(), message, data);
    }


    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}
